<?php defined('SYSPATH') or die('No direct script access.');
/**
 * 文件上传 date 重命名 (使用日期格式)
 *
 * @author  Yellow.Chow <aultoale@gmail.com>
 * @version $Id: date.php 187 2012-05-04 01:37:01Z yellow.chow $
 * @license http://www.gnu.org/licenses/gpl-3.0.html    GPL 3
 */
class Upload_Date extends Upload_Rename
{

    /**
     * 命名格式
     *
     * @var int
     */
    public static $format = 'Y/m';

    /**
     * 设置参数
     *
     * @param  string  $path
     * @param  string  $file
     * @return string
     * @throws Upload_Exception
     */
    public function save($path, $file)
    {
        $savefile = '/'.date(self::$format, time()).'/'.str_replace('.', '', microtime(TRUE)).'.'.$this->get_ext($file);
        $newfile = IO::strip($path.$savefile);

        if ( ! file_exists($newfile)) // 文件不存在
        {
            $path = dirname($newfile);
            if ( ! IO::mkdir($path)) // 创建目录
            {
                throw new Upload_Exception('无法创建文件上传目录 :path',
                    array(':path' => Debug::path($path)));
            }

            if ( ! @move_uploaded_file($this->_tmp, $newfile))
            {
                throw new Upload_Exception('无法从临时目录复制上传文件');
            }
        }

        return $savefile;
    }

}